import { _decorator, Component, instantiate, math, Node, Prefab } from 'cc';
const { ccclass, property } = _decorator;

enum prwardType {
    prward1 = 1, // 奖励类型1
    prward2 = 2, // 奖励类型2
}

@ccclass('EnemyManager')
export class EnemyManager extends Component {
    @property(Prefab)
    enemy0Prefab: Prefab = null; // 敌机预制体

    @property
    enemy0SpawnRate: number = 1; // 敌机生成频率（秒）

    @property(Prefab)
    enemy1Prefab: Prefab = null; // 敌机预制体

    @property
    enemy1SpawnRate: number = 5; // 敌机生成频率（秒）

    @property(Prefab)
    enemy2Prefab: Prefab = null; // 敌机预制体

    @property
    enemy2SpawnRate: number = 10; // 敌机生成频率（秒）


    @property
    wardSpawnRate: number = 30; // 奖励生成频率（秒）

    @property(Prefab)
    ward1Prefab: Prefab = null; // 奖励预制体1

    @property(Prefab)
    ward2Prefab: Prefab = null; // 奖励预制体2






    start() {

        this.schedule(this.spawnEnemy0, this.enemy0SpawnRate); // 定时生成敌机，参数1为要执行的方法，参数2为时间间隔
        this.schedule(this.spawnEnemy1, this.enemy1SpawnRate); // 定时生成敌机，参数1为要执行的方法，参数2为时间间隔
        this.schedule(this.spawnEnemy2, this.enemy2SpawnRate); // 定时生成敌机，参数1为要执行的方法，参数2为时间间隔
        this.schedule(this.spawnWard, this.wardSpawnRate); // 定时生成奖励，参数1为要执行的方法，参数2为时间间隔
    }

    update(deltaTime: number) {



    }

    spawnEnemy0() {
        this.randomSpawnEnemy(this.enemy0Prefab, -340, 340, 655); // 调用随机生成敌机的方法


    }
    spawnEnemy1() {
        this.randomSpawnEnemy(this.enemy1Prefab, -323, 323, 700); // 调用随机生成敌机的方法

    }
    spawnEnemy2() {
        this.randomSpawnEnemy(this.enemy2Prefab, -275, 275, 775); // 调用随机生成敌机的方法
        console.log("生成敌机2"); // 输出日志
    }

    spawnWard() {
        // 随机生成奖励
        let randomValue = math.randomRangeInt(1, 3); // 生成1到100之间的随机数
        console.log("随机生成的奖励类型:", randomValue); // 输出随机数
        let ifWard: Prefab = null; // 默认奖励类型
        if (randomValue === 1) {
            ifWard = this.ward1Prefab; // 设置奖励预制体
        } else if (randomValue === 2) {
            ifWard = this.ward2Prefab; // 设置奖励预制体
        }
        else {
            console.error("奖励预制体未设置！");
        }
        // 调用随机生成奖励的方法
        this.randomSpawnEnemy(ifWard, -330, 330, 720); // 调用随机生成奖励的方法
    }

    randomSpawnEnemy(enemyPrefab: Prefab, minX: number, maxX: number, Y: number) {
        if (enemyPrefab) {

            const enemyNode = instantiate(enemyPrefab); // 实例化敌机预制体
            const randomPosition = math.randomRangeInt(minX, maxX); // 生成随机数
            enemyNode.setPosition(randomPosition, Y, 0); // 通过随机数生成位置
            this.node.addChild(enemyNode); // 将敌机添加到当前节点下
        } else {
            console.error("敌机预制体未设置！");
        }
    }
}

